/*
 *  Лицензия MIT
 * 
 *  Copyright 2011 Salnikov Aleksey.
 * 
 *  Данная лицензия разрешает, безвозмездно, лицам, получившим копию данного программного обеспечения
 *  и сопутствующей документации (в дальнейшем именуемыми "Программное Обеспечение"),
 *  использовать Программное Обеспечение без ограничений, включая неограниченное право
 *  на использование, копирование, изменение, объединение, публикацию, распространение,
 *  сублицензирование и/или продажу копий Программного Обеспечения, также как и лицам,
 *  которым предоставляется данное Программное Обеспечение, при соблюдении следующих условий:
 * 
 *  Вышеупомянутый копирайт и данные условия должны быть включены во все копии или значимые
 *  части данного Программного Обеспечения.
 * 
 *  ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ ЛЮБОГО ВИДА ГАРАНТИЙ,
 *  ЯВНО ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ,
 *  СООТВЕТСТВИЯ ПО ЕГО КОНКРЕТНОМУ НАЗНАЧЕНИЮ И НЕНАРУШЕНИЯ ПРАВ. НИ В КАКОМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ
 *  НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ПО ИСКАМ О ВОЗМЕЩЕНИИ УЩЕРБА, УБЫТКОВ ИЛИ ДРУГИХ ТРЕБОВАНИЙ
 *  ПО ДЕЙСТВУЮЩИМ КОНТРАКТАМ, ДЕЛИКТАМ ИЛИ ИНОМУ, ВОЗНИКШИМ ИЗ, ИМЕЮЩИМ ПРИЧИНОЙ ИЛИ СВЯЗАННЫМ
 *  С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
 *  ИЛИ ИНЫМИ ДЕЙСТВИЯМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ.
 */

package CommonTools;

import java.awt.Color;
import java.awt.Component;
import java.util.List;
import javax.swing.JTable;
import javax.swing.JToolTip;
import javax.swing.table.DefaultTableCellRenderer;

/**
 * Класс для подсветки строк таблицы заявок
 *
 * @author Salnikov Aleksey
 */
public class DemandsCellRenderer extends DefaultTableCellRenderer{

    private JTable table;
    private List<Demand> demands;
    private Color backSelected, frontSelected, oddExecBack, nOddExecBack, normal;

    public void setDemands(List<Demand> demands)
    {
        this.demands = demands;

        //Цвета ставим
        normal = Color.BLACK;
        frontSelected = Color.WHITE;

        float hsbVals [] = new float [3];
        hsbVals = Color.RGBtoHSB(26, 8, 131, hsbVals);
        backSelected = Color.getHSBColor(hsbVals[0], hsbVals[1], hsbVals[2]);

        //Цвет для четной выполненой
        hsbVals = Color.RGBtoHSB(249, 249, 249, hsbVals);
        oddExecBack = Color.getHSBColor(hsbVals[0], hsbVals[1], hsbVals[2]);

        //Цвет для нечетной выполненной
        hsbVals = Color.RGBtoHSB(237, 237, 237, hsbVals);
        nOddExecBack = Color.getHSBColor(hsbVals[0], hsbVals[1], hsbVals[2]);
    }

    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) 
    {
        this.setText(value.toString());

        Demand demand = demands.get(row);

        //Готовим тултиптекст
        String toolTip = "<html>";
        toolTip += "<b>Проблема</b>: " + demand.getTheme() + "<br>";
        toolTip += "<b>Описание</b>: " + demand.getSubject();
        if (demand.getComment() != null)
            toolTip += "<br><b>Комментарий</b>:" + demand.getComment();
        toolTip += "</html>";
        
        this.setToolTipText(toolTip);

        //Теперь покрасим строчки
        if (!isSelected)
        {
            this.setForeground(normal);
            if (isOdd(row))
                this.setBackground(oddExecBack);
            else
                this.setBackground(nOddExecBack);
        }          
        else
        {
            this.setForeground(frontSelected);
            this.setBackground(backSelected);
        }

        //this.set

        return this;
    }

    private boolean isOdd(int i)
    {
        return (i % 2) == 0;
    }
}
